source-demo-tool 0.2.0

WIP: a library for opening (editing planned) source engine demo files.
Documentation
struct v3f64_t {
    double x,y,z;
};

struct header_t {
    u8 cmd;
    u32 tick;
    u8 slot;
};

struct cmd_header_t {
    s64 flags;
    v3f64_t ang[6];
    s32 inseq, outseq;
    u32 data_len;
};

struct varint_t {
    u8 a;
    if (a & 0x80) {
    u8 b;
    if (b & 0x80) {
    u8 c;
    }
    }
};

fn varint_parse(varint_t vi) {
    u32 value = 0;
    value += vi.a & 0x7F;
    if (vi.a & 0x80) {
        value += (vi.b & 0x7f) << 7;
        if (vi.b & 0x80) {
            value += (vi.c & 0x7f) << 14;
        }
    }
    return value;
};

struct protomsg_t {
    u8 msg;
    
    if (msg != 9) {
    //u8 capture[124];
    }
    
    varint_t len;
    u8 data[varint_parse(len)];
};

struct foo_int_t {
    
    
};

struct foo_t {
    header_t header;
    
    if (header.cmd == 1) {
        cmd_header_t cmd_header;
        u8 data[cmd_header.data_len];
    }
    
    if (header.cmd == 6) {
        u32 data_len;
        protomsg_t proto_msgs[490];
        
        u8 dataless[data_len - sizeof(proto_msgs)];
    }
};

foo_t bar[4] @ 0x0;